package day5;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class demo2 {


    int []dx={0,0,1,-1};
    int []dy={1,-1,0,0};
    int m;
    int n;
    Queue<int[]>queue=new LinkedList<>();
    boolean [][]index;
    public int rotApple (ArrayList<ArrayList<Integer>> grid) {
        m= grid.size();
        n=grid.get(0).size();
index=new boolean[m][n];
        for (int i = 0; i <m ; i++) {
            for (int j = 0; j <n ; j++) {
             if (grid.get(m).get(n)==2){
                 queue.add(new int[]{m,n});
             }
            }
        }

        int ret=0;
        while (!queue.isEmpty()){
            int sz= queue.size();
          while (sz!=0){
              int[]t= queue.poll();
              sz--;
              for (int i = 0; i <4 ; i++) {
                  int y=t[0]+dy[i];
                  int x=t[1]+dx[i];
                  if(x>=0&&x<n&&y>=0&&y<m&&grid.get(y).get(x)==1&&!index[y][x]){
                      queue.add(new int[]{y,x});
                      index[y][x]=true;
                  }
              }
          }
          ret++;
        }

        for (int i = 0; i <m ; i++) {
            for (int j = 0; j <n ; j++) {
                if (!index[i][j]&&grid.get(i).get(j)==1){
                    return -1;
                }

            }
        }

return ret-1;
    }



}
